package cn.zhx.xa.system.service;


import cn.zhx.xa.model.dto.user.LoginDto;
import cn.zhx.xa.model.dto.user.SysUserAddOrUpdateDto;
import cn.zhx.xa.model.dto.user.SysUserSearchDto;
import cn.zhx.xa.model.dto.user_role.AssignRoleDto;
import cn.zhx.xa.model.entity.SysUser;
import cn.zhx.xa.model.vo.index.LoginVo;
import cn.zhx.xa.model.vo.index.SysUserInfoVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

public interface SysUserService {

    /**
     * 根据用户名查询用户数据
     * @return
     */
    LoginVo login(LoginDto loginDto) ;

    /**
     * 退出功能
     * @param token
     */
    void logout(String token);

    /**
     * 根据token获取用户信息
     */
    SysUserInfoVo getUserInfo(String token);


    /**
     * 查询用户分页数据
     * @param sysUserSearchDto
     * @param pageNum
     * @param pageSize
     * @return
     */
    Page<SysUser> findByPage(SysUserSearchDto sysUserSearchDto, Integer pageNum, Integer pageSize);

    /**
     * 保存用户数据
     * @param sysUser
     */
    void saveSysUser(SysUserAddOrUpdateDto sysUser);

    /**
     * 修改用户
     * @param sysUserAddOrUpdateDto
     */
    void updateSysUser(SysUserAddOrUpdateDto sysUserAddOrUpdateDto);

    /**
     * 删除用户
     * @param userId
     */
    void deleteById(Long userId);

    /**
     * 保存用户角色的关系
     * @param assignRoleDto
     */
    void doAssign(AssignRoleDto assignRoleDto);

    /**
     * 注册
     * @param username
     * @param password
     * @param checkPassword
     */
    void userRegister(String username, String password, String checkPassword);
}